package com.keray.common;

import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.LambdaUtils;
import com.baomidou.mybatisplus.core.toolkit.support.ColumnCache;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.keray.common.entity.IBEntity;

import java.util.HashMap;
import java.util.Map;

/**
 * @author by keray
 * date:2021/5/10 4:13 下午
 */
public class KerayLambdaUpdateWrapper<T extends IBEntity<T>> extends LambdaUpdateWrapper<T> {

    private Map<String, Map<String, ColumnCache>> cache = new HashMap<>();

    protected String columnToString(SFunction<T, ?> column, boolean onlyColumn) {
        return KerayLambda.getColumn(LambdaUtils.resolve(column), onlyColumn, getEntityClass(), cache);
    }

    public KerayLambdaUpdateWrapper() {
        this((T) null);
    }

    /**
     * 不建议直接 new 该实例，使用 Wrappers.lambdaQuery(entity)
     */
    public KerayLambdaUpdateWrapper(T entity) {
        super.setEntity(entity);
        super.initNeed();
    }

    /**
     * 不建议直接 new 该实例，使用 Wrappers.lambdaQuery(entity)
     */
    public KerayLambdaUpdateWrapper(Class<T> entityClass) {
        super.setEntityClass(entityClass);
        super.initNeed();
    }
}
